﻿// <copyright file="WSIdentity2007.cs" company="SharpSTS">
// Copyright (c) 2007, 2008 All Right Reserved, http://sharpsts.com/
//
// This source is subject to the Microsoft Permissive License.
// Please see the License.txt file for more information.
// All other rights reserved.
//
// THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY 
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// </copyright>
// <author>Barry Dorrans</author>
// <email>barryd@idunno.org</email>
// <date>2008-06-18</date>
// <summary>Holds WSIdentity2007 constants.</summary>

namespace SharpSTS.Constants
{
    /// <summary>
    /// Holds WSIdentity 2007 constants
    /// </summary>
    internal static class WSIdentity2007
    {
        /// <summary>
        /// The issuer information hierarchy.
        /// </summary>        
        /// <remarks>
        /// See http://blogs.msdn.com/card/archive/2007/10/24/providing-custom-data-in-an-information-card.aspx
        /// The maximum length of the name and value strings is 255 characters and a maximum of 20 pairs can be provided.
        /// </remarks>
        internal static class IssuerInformation
        {
            /// <summary>
            /// The issuer information entry schema.
            /// </summary>
            internal static class IssuerInformationEntry
            {
                /// <summary>
                /// Holds element names.
                /// </summary>
                internal static class Elements
                {
                    /// <summary>
                    /// This optional element provides a issuer specific information in a managed card. 
                    /// </summary>
                    public const string IssuerInformationEntry = "IssuerInformationEntry";

                    /// <summary>
                    /// This optional element provides the name of an issuer specific information entry.
                    /// </summary>
                    /// <remarks>An entry name can have a maximum length of 255 characters.</remarks>
                    public const string EntryName = "EntryName";

                    /// <summary>
                    /// This optional element provides the value of an issue specific information entry.
                    /// </summary>
                    /// <remarks>An entry name can have a maximum length of 255 characters.</remarks>
                    public const string EntryValue = "EntryValue";
                }
            }

            /// <summary>
            /// Holds namespace constants.
            /// </summary>
            internal static class Namespace
            {
                /// <summary>
                /// The Namespace URI.
                /// </summary>
                public const string Uri = WSIdentity2007.Namespace.Uri;
            }
        }

        /// <summary>
        /// Holds namespace constants.
        /// </summary>
        internal static class Namespace
        {
            /// <summary>
            /// The URI for the WSIdentity 2007 namespace.
            /// </summary>
            public const string Uri = "http://schemas.xmlsoap.org/ws/2007/01/identity";

            /// <summary>
            /// The namespace prefix for the WSIdentity 2007 namespace.
            /// </summary>
            /// <value>The namespace prefix for WSIdentity 2007.</value>
            public const string Prefix = WSIdentity.Namespace.Prefix;
        }

        /// <summary>
        /// Provides element names.
        /// </summary>
        internal static class Elements
        {
            /// <summary>
            /// This optional element requires a relying party to have a valid certificate.
            /// </summary>
            public const string RequireStrongRecipientIdentity = "RequireStrongRecipientIdentity";

            /// <summary>
            /// This optional element provides a collection of issuer specific information in a managed card.
            /// </summary>
            public const string IssuerInformation = "IssuerInformation";
        }
    }
}
